home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-09-17 | 5.8 KB | 192 lines | [TEXT/MPS ] |
- //========================================================================================
- //
- // File: Actions.h
- // Release Version: $ ODF 2 $
- //
- // Copyright: (c) 1993 - 1996 by Apple Computer, Inc., all rights reserved.
- //
- //========================================================================================
-
- #ifndef ACTIONS_H
- #define ACTIONS_H
-
- #ifndef FWRUNTYP_H
- #include "FWRunTyp.h"
- #endif
-
- #ifndef FWARDYNA_H
- #include "FWArDyna.h"
- #endif
-
- // ----- Macintosh Includes -----
-
- #if defined(FW_BUILD_MAC) && !defined(__OSA__)
- #include <OSA.h>
- #endif
-
- //========================================================================================
- // Forward declarations
- //========================================================================================
-
- class ODStorageUnit;
- class FW_CKind;
- class FW_CReadableStream;
- class FW_CWritableStream;
-
- //========================================================================================
- // class CAction
- //========================================================================================
-
- class CAction
- {
- public:
- FW_DECLARE_CLASS
-
- //----------------------------------------------------------------------------------------
- // Initialization/Destruction
- //
- public:
- CAction(short actionType);
- virtual ~CAction();
-
- //----------------------------------------------------------------------------------------
- // Action protocol
- //
- public:
- virtual void Internalize(Environment* ev, ODStorageUnit* storage, FW_CKind* kind) = 0;
- virtual void Externalize(Environment* ev, ODStorageUnit* storage, FW_CKind* kind) = 0;
- virtual void DoIt() = 0;
-
- short GetActionType() const
- {return fActionType;}
-
- //----------------------------------------------------------------------------------------
- // Action protocol
- //
- protected:
- short fActionType;
- };
-
- //========================================================================================
- // class CSoundAction
- //========================================================================================
-
- class CSoundAction : public CAction
- {
- public:
- FW_DECLARE_CLASS
-
- //----------------------------------------------------------------------------------------
- // Initialization/Destruction
- //
- public:
- CSoundAction(Environment* ev, ODStorageUnit* storage, FW_CKind* kind);
- CSoundAction(Environment* ev, FW_CReadableStream& stream);
- virtual ~CSoundAction();
-
- //----------------------------------------------------------------------------------------
- // Archiving
- //
- public:
- static void* Read(FW_CReadableStream& stream, FW_ClassTypeConstant type);
- static void Write(FW_CWritableStream& stream, FW_ClassTypeConstant type, const void *object);
-
- //----------------------------------------------------------------------------------------
- // Action protocol
- //
- public:
- virtual void Internalize(Environment* ev, ODStorageUnit* storage, FW_CKind* kind);
- virtual void Externalize(Environment* ev, ODStorageUnit* storage, FW_CKind* kind);
-
- virtual void DoIt();
-
- //----------------------------------------------------------------------------------------
- // Private implementation
- //
- private:
- void InternalizeSoundFile(Environment* ev, ODStorageUnit* storage);
- void InternalizeFromStream(Environment* ev, FW_CReadableStream& stream);
-
- void ExternalizeToStream(Environment* ev, FW_CWritableStream& stream);
-
- Handle fSoundHandle;
- };
-
- //========================================================================================
- // class CScriptAction
- //========================================================================================
-
- class CScriptAction : public CAction
- {
- public:
- FW_DECLARE_CLASS
-
- public:
- //----------------------------------------------------------------------------------------
- // Initialization/Destruction
- //
- CScriptAction(Environment* ev, ODStorageUnit* storage, FW_CKind* kind);
- CScriptAction(Environment* ev, FW_CReadableStream& stream);
- virtual ~CScriptAction();
-
- //----------------------------------------------------------------------------------------
- // Archiving
- //
- public:
- static void* Read(FW_CReadableStream& stream, FW_ClassTypeConstant type);
- static void Write(FW_CWritableStream& stream, FW_ClassTypeConstant type, const void *object);
-
- //----------------------------------------------------------------------------------------
- // Action protocol
- //
- public:
- virtual void Internalize(Environment* ev, ODStorageUnit* storage, FW_CKind* kind);
- virtual void Externalize(Environment* ev, ODStorageUnit* storage, FW_CKind* kind);
-
- virtual void DoIt();
-
- //----------------------------------------------------------------------------------------
- // Private implementation
- //
- private:
- void InternalizeScriptFile(Environment* ev, ODStorageUnit* storageUnit);
- void InternalizeFromStream(Environment* ev, FW_CReadableStream& stream);
-
- void ExternalizeToStream(Environment* ev, FW_CWritableStream& stream);
-
- inline ComponentInstance GetScriptingComponent();
- inline void ReleaseScriptingComponent();
-
- void LoadAndExecuteScript(Handle scriptData);
-
- Handle fScriptHandle;
-
- static ComponentInstance fgComponentInstance;
- };
-
- #endif
-
- //----------------------------------------------------------------------------------------
- // CScriptAction::GetScriptingComponent
- //----------------------------------------------------------------------------------------
-
- inline ComponentInstance CScriptAction::GetScriptingComponent()
- {
- if (!fgComponentInstance)
- fgComponentInstance = ::OpenDefaultComponent(kOSAComponentType, kOSAGenericScriptingComponentSubtype);
-
- return fgComponentInstance;
- }
-
- //----------------------------------------------------------------------------------------
- // CScriptAction::ReleaseScriptingComponent
- //----------------------------------------------------------------------------------------
-
- inline void CScriptAction::ReleaseScriptingComponent()
- {
- if (fgComponentInstance)
- {
- CloseComponent(fgComponentInstance);
- fgComponentInstance = NULL;
- }
- }